package main

import (
	"fmt"
	//"log"
	"net/http"
	"time"
	"log"
	"html/template"


)
import   "gowebs/gee"


type Student struct{
	Name string
	Age  int8
}

func FormatAsDate(t time.Time)string{
	year,month,day :=t.Date()
	return fmt.Sprintf("%d-%02d-%02d",year,month,day)
}


// Engine 是处理所有请求的唯一处理器
// type Engine struct{}


// func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request){
// 	switch req.URL.Path {
// 	case "/":
// 		fmt.Fprintf(w,"URL.Path = %q\n",req.URL.Path)

// 	case "/hello":
// 		for k,v :=range req.Header{
// 			fmt.Fprintf(w,"Header[%q]=%q\n",k,v)
// 		}
		
//     default:
// 		fmt.Fprintf(w,"404 NOT FOUND:%s\n",req.URL)
// 	}
// }

func onlyForV2() gee.HandlerFunc {
	return func(c *gee.Context) {
		// Start timer
		t := time.Now()
		// if a server error occurred
		// c.Fail(500, "Internal Server Error")
		// Calculate resolution time
		log.Printf("[%d] %s in %v for group v2", c.StatusCode, c.Req.RequestURI, time.Since(t))
	}
}


//gee web框架
// func main() {
//
// 	r := gee.New()
// 	r.Use(gee.Logger()) //global midlleware
//     r.SetFuncMap(template.FuncMap{
// 		"FormatAsDate":FormatAsDate,
// 	})
// 	r.LoadHTMLGlob("templates/*")
// 	r.Static("/assets","./static")
//
//     stu1 := &Student{Name:"Geektutu",Age:20}
//
// 	stu2 :=&Student{Name:"jack",Age:22}

	// r.GET("/index",func(c *gee.Context){
	// 	c.HTML(http.StatusOK,"<h1>Index Page</h1>")

	// })
//
// 	r.GET("/",func(c *gee.Context){
// 			c.HTML(http.StatusOK,"css.tmpl",nil)
//
// 		})
//
//
//
// 	v1 :=r.Group("/v1")
//
// 	{
		// v1.GET("/",func(c *gee.Context){
		// 	c.HTML(http.StatusOK,"<h1>Hello Gee</h1>")
		// 	//c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
		// })

// 		v1.GET("/hello",func(c *gee.Context){
// 			c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
// 		})
//
// 	}
//
// 	r.GET("/students",func(c *gee.Context){
// 		c.HTML(http.StatusOK,"arr.tmpl",gee.H{
// 			"title": "gee",
// 			"stuArr":[2]*Student{stu1,stu2},
// 		})
// 	})
//
// 	r.GET("/date",func(c *gee.Context){
// 		c.HTML(http.StatusOK,"custom_func.tmpl",gee.H{
// 			"title":"gee",
// 			"now": time.Date(2019,8,17,0,0,0,0,time.UTC),
// 		})
// 	})

    

	// r.GET("/hello/:name",func(c *gee.Context){
	// 	c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
	// })

	// r.GET("/", func(w http.ResponseWriter, req *http.Request) {
	// 	fmt.Fprintf(w, "URL.Path = %q\n", req.URL.Path)
	// })

	// r.GET("/hello", func(w http.ResponseWriter, req *http.Request) {
	// 	for k, v := range req.Header {
	// 		fmt.Fprintf(w, "Header[%q] = %q\n", k, v)
	// 	}
	// })

	// r.POST("/login",func(c *gee.Context){
    //       c.JSON(http.StatusOK,gee.H{
	// 		"username":c.PostForm("username"),
	// 		"password":c.PostForm("password"),
	// 	  })


	// })

    //  r.GET("/assets/*filepath",func(c *gee.Context){
	// 		c.JSON(http.StatusOK,gee.H{"filepath":c.Param("filepath")})
	// 	})


// 	v2 :=r.Group("/v2")
// 	v2.Use(onlyForV2())
// 	{
		// v2.GET("/",func(c *gee.Context){
		// 	c.HTML(http.StatusOK,"<h1>Hello Gee</h1>")
		// 	//c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
		// })

// 		v2.GET("/hello",func(c *gee.Context){
// 			c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
// 		})

		// v2.GET("/assets/*filepath",func(c *gee.Context){
		// 	c.JSON(http.StatusOK,gee.H{"filepath":c.Param("filepath")})
		// })

	//}
	// v2.Use(onlyForV2())
	// {
	// 	v2.GET("/",func(c *gee.Context){
	// 		c.HTML(http.StatusOK,"<h1>Hello Gee</h1>")
	// 		//c.String(http.StatusOK,"hello %s,you're at %s\n",c.Query("name"),c.Path)
	// 	})


	// 	v2.GET("/hello/:name", func(c *gee.Context) {
	// 		// expect /hello/geektutu
	// 		c.String(http.StatusOK, "hello %s, you're at %s\n", c.Param("name"), c.Path)
	// 	})
		// v2.POST("/login", func(c *gee.Context) {
		// 	c.JSON(http.StatusOK, gee.H{
		// 		"username": c.PostForm("username"),
		// 		"password": c.PostForm("password"),
		// 	})
		// })


		// v2.GET("/assets/*filepath",func(c *gee.Context){
		// 	c.JSON(http.StatusOK,gee.H{"filepath":c.Param("filepath")})
		// })
	//}
	// r.GET("/assets/*filepath",func(c *gee.Context){
	// 	c.JSON(http.StatusOK,gee.H{"filepath":c.Param("filepath")})
	// })

	//panic("crash")
//
// 	r.GET("/panic",func(c *gee.Context){
// 		names := []string{"geektutu"}
// 		c.String(http.StatusOK,names[100])
// 	})
//
// 	r.Run(":9999")
      
	// engine :=new(engines.Engine)
	// log.Fatal(http.ListenAndServe(":9999", engine))



	// http.HandleFunc("/", indexHandler)
	// http.HandleFunc("/hello", helloHandler)
	// log.Fatal(http.ListenAndServe(":9999", nil))
//}

// // handler echoes r.URL.Path
// func indexHandler(w http.ResponseWriter, req *http.Request) {
// 	fmt.Fprintf(w, "URL.Path = %q\n", req.URL.Path)
// }

// // handler echoes r.URL.Header
// func helloHandler(w http.ResponseWriter, req *http.Request) {
// 	for k, v := range req.Header {
// 		fmt.Fprintf(w, "Header[%q] = %q\n", k, v)
// 	}
// }

//orm框架
func main(){
  fmt.Println("22")
}